package Kernel;

import java.io.*;
import java.util.Calendar;

/**
 * Cette classe permet de générer une page html du billet de réservation du client,
 * la page html est enregistré dans un dossier nommé "Réservations" placé à la racine du projet
 * @author benaicha
 *
 */
public class HtmlBillet {

	private int numReservation=0;
	private String dateDeDepart;
	private String villeDeDepart;
	private String dateDarrive;
	private String villeDarrive;
	private String option;
	private String prixTotale;
	private String nom;
	private String prenom;
	private String transport;
	private String heureDepart;
	private String heureArrive;
	
	
	/**
	 * le constructeur HtmlBillet affecte toutes les instances qui correspondent aux informations relative au billet qui est passé en paramètre
	 * @param billet
	 */
	public HtmlBillet(Billet billet){
		
		numReservation++;
		
		dateDeDepart= ""+billet.getTypeTrajet().getDateDepart().get(Calendar.DAY_OF_MONTH)+"/" + billet.getTypeTrajet().getDateDepart().get(Calendar.MONTH)
		+ "/" + billet.getTypeTrajet().getDateDepart().get(Calendar.YEAR);
		
		villeDeDepart= ""+billet.getTypeTrajet().getVilleDepart().getNom();
		
		dateDarrive= ""+billet.getTypeTrajet().getDateArrivee().get(Calendar.DAY_OF_MONTH)
		+ "/" + billet.getTypeTrajet().getDateArrivee().get(Calendar.MONTH)
		+ "/" + billet.getTypeTrajet().getDateArrivee().get(Calendar.YEAR);
		
		villeDarrive=""+billet.getTypeTrajet().getVilleArrivee().getNom();
		
		option= ""+ getOption(billet);
		
		prixTotale=""+billet.prixDefinitif();
		nom=billet.getClient().getNom();
		prenom= billet.getClient().getPrenom();
		transport= ""+billet.getTypeTrajet().getVehicule();
		heureDepart= billet.getTypeTrajet().getDateArrivee().get(Calendar.HOUR)+";"+billet.getTypeTrajet().getDateArrivee().get(Calendar.MINUTE);
		heureArrive= billet.getTypeTrajet().getDateArrivee().get(Calendar.HOUR)+";"+billet.getTypeTrajet().getDateArrivee().get(Calendar.MINUTE);
		
	}
	
	/**
	 * cette methode renvoie une chaine de caractère contenant l'enssemble des options du billet
	 * cette méthode est utilisé par le constructeur pour affecté la variable "Option"
	 * @param billet
	 * @return
	 */
	public String getOption(Billet billet){
		
		String s="";
		if (billet.getTypeTrajet().getTypeDeBase() != "Modifiable" && billet.isModifier() == true) {
			s = s + "Modifiable ;";
		} else {
			s = s + billet.getTypeDeBillet()+";";
		}
		if (billet.isRepas() == true) {
			s = s + " Repas ; ";
		}
		if(billet.isBonusConfort()==true){
			s=s+" Couchette/Cabine ; ";
		}
		if(billet.isCarteFidelite()==true){
			s=s+" Carte de Fidelité";
		}
		return s;
	}
	
	/**
	 *Cette méthode permet la génération et l'enregistrement de la page Html du billet 
	 */
	public void generationHtml(){
		
		try{
			File MaReservation= new File("Reservations/MaReservation_"+"R"+numReservation+".html"); // création du fichier html
			FileWriter out=new FileWriter(MaReservation);// création du FileWriter qui permet d'ecrire sur le fichier html
			
			
			// écriture de la page HTML
			out.write("<!DOCTYPE html>\r\n<html>\r\n<head>\r\n <meta charset=\"UTF-8\">\r\n<title>Ma réservation</title>\r\n<style>body{margin:0;padding: 0;font-family : Arial, Helvetica, sans-serif;font-size: 14px;color:rgb(0,0,0);width:100%;}h1{font-size: 2em;text-align:left;color:#000000;padding: 0em 0em 0em 0.8em ;}em{font-size: 1em;font-weight: bold;}#header{overflow:hidden;margin: 2em;padding: 0em 0em 0em 0.8em ;height:4em;width:40%;position:fixed;left:0px;top:0px;background:#a199f2;}#content{width:40%;margin: 2em;position:absolute;padding: 0em 0em 0em 0.8em ;top:6.2em;left:0px;background:#bebdc5;}#content ul{padding:0.8em;text-align:left;list-style:none;line-height:2em;}</style>\r\n</head>\r\n<boy>\r\n<div id=\"header\">\r\n" +
					"<h1>Ma Réservation</h1>\r\n</div>\r\n<div id=\"content\">\r\n<ul>\r\n<li><em>Le numéro de réservation : </em>"+"R"+numReservation+"" +
					"</li>\r\n<li><em>Nom: </em>"+nom+
					"</li>\r\n<li><em>Prénom: </em>"+prenom+
						"</li>\r\n<li><em>Type de Transport: </em>"+transport+
							" </li>\r\n<li><em>Date de départ : </em>"+dateDeDepart+"" +
							"</li>\r\n<li><em>Ville de départ: </em>"+villeDeDepart+"" +
							"</li>\r\n<li><em>Heure de depart: </em>"+heureDepart+
									"</li>\r\n<li><em>Date d'arrivé : </em>"+dateDarrive+"" +
									"</li>\r\n<li><em>Ville d'arrivé: </em>"+villeDarrive+
									"</li>\r\n<li><em>Heure d'arrivé: </em>"+heureArrive+
										"</li>\r\n<li><em>Options: </em>"+option+"" +
											"</li>\r\n<li><em>Prix Totale: </em>"+prixTotale+"" +
												" €</li>\r\n</ul>\r\n</div>\r\n</body>\r\n</html>");
			
			// on vide le buffer
			out.flush();
			out.close();
			
		}
		catch(IOException ioe){
			System.out.println("erreur : "+ioe);
		}
		
		// déclaration du RunTime qui permet de lancer la page
		Runtime runtime = Runtime.getRuntime(); 
		
		
		try{
			//lancement et execution de la page HTML
			runtime.exec(new String[] {"firefox", "Reservations/MaReservation_" +"R"+numReservation+".html"});
		}
		catch (IOException ex){
		ex.printStackTrace();
		}
	
	}
	
	/* 
	 * HtmlBillet html = new HtmlBillet(billet);
	 * html.generationHtml();
	 * 
	 * 
	 */
	
}
